1. Field
This present invention relates generally to data communications, and more specifically, to a service gateway.
2. Background
Fast path HTTP is an implementation of HTTP proxy service in a service gateway such as a server load balancer or an application delivery controller. Examples of fast path HTTP can be found in products such as A10 Networks™ AX Series Server Load Balancers. Fast path HTTP is optimized for high performance, often with hardware-based accelerator support. A major difference between a typical or normal HTTP implementation and a fast-path HTTP mode is that handling of the underlying TCP (Transmission Control Protocol) session of fast path HTTP does not use a normal or full TCP stack. Instead, fast-path HTTP uses a fast path or light weight TCP (LW-TCP) stack that handles sequence (SEQ) and acknowledge (ACK) number adjustments for proxy purposes, without the packet buffering used in a normal TCP stack. Thus, fast-path HTTP processing can achieve a higher level of performance compared to the normal HTTP processing.
However, the lack of a normal TCP stack poses challenges for corner cases and special protocol handling. In one example, when a TCP packet containing a partial HTTP request is received at the service gateway, where the partial HTTP request contains a partial URI. The partial URI information may not contain sufficient information for the service gateway such as a HTTP server load balancer to select a back end server. In this example, the service gateway needs to wait for additional TCP packets carrying the remaining HTTP request. However, to avoid the client of the HTTP request from unnecessarily retransmitting the earlier received TCP packet, the service gateway needs to send a TCP ACK to the client. In a different protocol handling situation, the service gateway may need to retransmit TCP packets to the server. Such handling of ACK and retransmission are found in a normal TCP stack implementation and require additional processing in a typical LW-TCP stack.
Even though occurrences of corner cases are infrequent, special handling of the corner cases in either fast path HTTP or LW-TCP modules is error prone and performance affecting, considering the various combinations of corner cases in an actual network. Any performance gain of fast path HTTP may be offset by the corner cases processing. It is appropriate, however, not to consider any special handling in fast-path HTTP, but rather to allow these cases to be handled by the normal HTTP processing.
Therefore, there is a need for a system and method to transition from a fast-path HTTP processing scenario to a normal HTTP processing.